<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.js"></script>
    <title>p31-32生命周期函数/title>
</head>
<body>
    <div id="app">
        <p id="appp">{{msg}}</p>
    </div>
    <script>
        var vm=new Vue({
            el:"#app",
            data:{
                msg:"this is a message"
            },
            methods:{
                show(){
                    console.log("show");
                }
            },
            //这是我们遇到的第一个生命周期函数，表示实例被完全创建出来之前会执行它
            //注意在beforeCreate生命周期函数执行的时候，methods和data中的数据都还没有被初始化
            beforeCreate(){
                // console.log(this.msg);
            },
            //在created中，data和methods都已经被初始化好了，如果要调用methods中的方法或者操作data中的数据，最早只能在created中操作
            created(){
                console.log(this.msg);
                this.show();
            },
            beforeMount(){
                //表示模板已经在内存中编辑完成了，但是尚未把模板渲染到页面中
                //在beforeMount执行的时候页面中的元素还没有被替换过来，只是之前写的一些模板字符串
                console.log(document.getElementById("appp").innerText)
            },
            mounted(){
                //表示内存中的模板已经真实的挂载到了页面当中，用户已经可以看到渲染好的页面
                //mounted是实例创建期间最后一个生命周期函数，当执行完mounted就表示，实例已经被完全创建好了，此时如果没有其他操作，这个实例就静静的躺在我们的内存中，一动不动。
            },
            //这时表示我们的页面还没有被更新，但是数据肯定被更新了
            beforeUpdate(){

            },
            //update事件执行的时候页面和data中的数据已经保持同步了，都是最新的
            updated(){

            },
            //当执行beforeDestroy的时候，实例身上所有的data和所有的methods以及过滤器，自定义指令。。。都处于可用状态，此时还没有真正的执行销毁的过程
            beforeDestroy(){

            },
            //当执行到destroy生命周期函数的时候，组件已经被完全销毁了，此时组件中的数据、方法、指令、过滤器都已经不可用了。
            destroyed(){

            }
        })
    </script>
</body>
</html>